package com.dingreading.cloud.common.util;

import org.apache.commons.lang3.StringUtils;

import java.util.regex.Pattern;

/**
 * 一些常用正则验证，手机号，邮箱等
 */
public class RegularUtil {

    /**
     * 大陆手机号验证
     *
     * @param phoneNumber 手机号
     * @return boolean
     */
    public static boolean isValidPhoneNumber(String phoneNumber) {
        if ((phoneNumber != null) && (!phoneNumber.isEmpty())) {
            return Pattern.matches("^1[3-9]\\d{9}$", phoneNumber);
        }
        return false;
    }

    /**
     * 邮箱验证
     *
     * @param email 邮箱
     * @return boolean
     */
    public static boolean isValidEmail(String email) {
        if ((email != null) && (!email.isEmpty())) {
            return Pattern.matches("^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$", email);
        }
        return false;
    }

    // 判断是否全为数字
    public static boolean isNumber(String str) {
        String regEx = "[0-9]+";
        return str.matches(regEx);
    }

    /**
     * @param phone
     * @return String
     * @Description: 使用正则表达式实现
     * @version v1.0
     * @author wu
     * @date 2022年4月13日 下午11:05:52
     */
    public static String hidePhone(String phone) {
        if (StringUtils.isNotBlank(phone) && phone.length() == 11) {
            return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
        }
        return phone;
    }

    public static String hideWxName(String wxName) {
        if (StringUtils.isNotBlank(wxName)) {
            return wxName.replaceAll("(\\d{2})\\d{3}(\\d{5})", "$1***$2");
        }
        return wxName;
    }

    public static String hideWxName(String input, int showFirst, int showLast) {
        return StringUtils.overlay(input,
                StringUtils.repeat('*', input.length() - showFirst - showLast),
                showFirst, input.length() - showLast);
    }

    public static void main(String[] args) {
//        System.out.println(isNumber("杜甫1"));
//        System.out.println(isNumber("杜1甫"));
//        System.out.println(isNumber("1杜甫"));
//        System.out.println(isNumber("1234"));

//        System.out.println(hideWxName("qw1231",2,2));
//        System.out.println(hideWxName("qw12311",2,2));
//        System.out.println(hideWxName("111112222233333",2,2));
//        System.out.println(hideWxName("11111222223333344444"));
    }
}